package com.smart.manager.system.entities.body;

import com.smart.common.entities.core.BaseSearch;
import com.smart.common.entities.domain.DataScope;
import com.smart.manager.system.entities.enums.AccountState;
import com.smart.manager.system.entities.enums.AccountType;
import com.smart.manager.system.entities.enums.Sex;
import com.smart.manager.system.entities.views.DeptView;
import com.smart.manager.system.entities.views.OrganView;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.Valid;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;


/**
 *
 * @author xiaxuqiu
 * @date 2023/03/26
 */
public class RSystemAccount {

    @Data
    @EqualsAndHashCode(callSuper = true)
    @ApiModel("RSystemAccount1")
    public static class SearchBody extends BaseSearch {

        @ApiModelProperty("登录账号")
        private String account;

        @ApiModelProperty("用户真实姓名")
        private String name;

        @ApiModelProperty("账号状态")
        private AccountState state;
        @ApiModelProperty("人员性别")
        private Sex sex;

        @ApiModelProperty("手机号码")
        private String phoneNumber;

    }


    @Data
    @ApiModel("RSystemAccount2")
    public static class EditBody implements Serializable {

        /**
         * 登录账号
         */

        @ApiModelProperty("登录账号")
        @NotBlank(message = "登录账号   不能为空")
        private String account;
        /**
         * 用户真实姓名
         */

        @ApiModelProperty("用户姓名")
        @NotBlank(message = "用户姓名   不能为空")
        private String name;
        /**
         * 操作员性别 1=男 2=女 3=未知
         */

        @ApiModelProperty("操作员性别")
        @NotNull(message = "操作员性别   不能为空")
        private Sex sex;

        /**
         * 角色代码集合
         */

        @ApiModelProperty("角色代码集合")
        @NotNull(message = "用户角色不能为空")
        private List<String> roleCodes;
        /**
         * 登录手机
         */

        @ApiModelProperty("手机号码")
        @NotBlank(message = "手机号码   不能为空")
        private String phoneNumber;


        /**
         * 登录邮箱
         */

        @ApiModelProperty("登录邮箱")
        @Email(message = "邮箱格式不正确")
        private String email;
        /**
         * QQ号码
         */

        @ApiModelProperty("QQ号码")
        private String qq;
        /**
         * 微信号码
         */

        @ApiModelProperty("微信号码")
        private String wechat;

        /**
         * 账号状态 枚举
         */

        @ApiModelProperty("账号状态")
        @NotNull(message = "账号状态 不能为空")
        private AccountState state;


        @ApiModelProperty("账号类型")
        private AccountType accountType;


        @ApiModelProperty("所属机构")
        @NotNull(message = "所属机构   不能为空")
        @Valid
        private OrganView organ;


        @ApiModelProperty("所属部门")
        @NotNull(message = "所属部门   不能为空")
        @Valid
        private DeptView dept;

        @ApiModelProperty("关联机构名称")
        private transient String officeName;



        @ApiModelProperty("授权机构")
        @NotNull(message = "授权机构不能为空")
        private DataScope dataScope;
    }


}
